// ConsoleApplication19.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
#define N 3

void carica(int matrix[][N]);
void calcola(int matrix[][N], int *ps1, int *ps2);
void cerca(int matrix[][N], int *pe);
void max(int matrix[][N], int *pr, int *pc);
void conta(int matrix[][N]);
void visualizza(int matrix[][N]);
int cerca2(int matrix[][N], int x);

int main()
{
	srand(time(NULL));
	int matrix[N][N];
	int somma1, somma2;
	int cont;
	int righe, colonne;
	carica(matrix);
	calcola(matrix, &somma1, &somma2);
	cerca(matrix, &cont);
	max(matrix, &righe, &colonne);
	visualizza(matrix);
	printf("La somma della diagonale principale è %d\n", somma1);
	printf("La somma della diagonale secondaria è %d\n", somma2);
	printf("L'elemento cercato è stato trovato %d volte\n", cont);
	printf("La riga più grande è %d\n", righe);
	printf("La colonna più grande è %d\n", colonne);
	conta(matrix);
	system("pause");
    return 0;
}

void carica(int matrix[][N])
{
	for (int j = 0; j < N; j++)
		for (int i = 0; i < N; i++)
			matrix[j][i] = rand() % 10;
}
void calcola(int matrix[][N], int *ps1, int *ps2)
{
	int somma1 = 0;
	int somma2 = 0;
	for (int j = 0; j < N; j++)
	{
		for (int i = 0; i < N; i++)
		{
			if (j == i)
				somma1 = somma1 + matrix[j][i];
			if ((j + i) == (N - 1))
				somma2 = somma2 + matrix[j][i];
		}
	}
	*ps1 = somma1;
	*ps2 = somma2;
}
void cerca(int matrix[][N], int *pe)
{
	int cont = 0;
	int x;
	printf("Inserisci il numero da cercare:\n");
	scanf_s("%d", &x);
	for (int j = 0; j < N; j++)
	{
		for (int i = 0; i < N; i++)
		{
			if (matrix[j][i] == x)
				cont++;
		}
	}
	*pe = cont;
}
void max(int matrix[][N], int *pr, int *pc)
{
	int maxr = 0;
	int sr = 0;
	int sc = 0;
	int maxc = 0;
	for (int j = 0; j < N; j++)
	{
		sr = 0;
		for (int i = 0; i < N; i++)
		{
			sr = sr + matrix[j][i];
		}
		if (sr > maxr)
		{
			maxr = sr;
			*pr = j;
		}
	}
	for (int j = 0; j < N; j++)
	{
		sc = 0;
		for (int i = 0; i < N; i++)
		{
			sc = sc + matrix[i][j];
		}
		if (sc > maxc)
		{
			maxc = sc;
			*pc = j;
		}
	}
}
void conta(int matrix[][N])
{
	for (int j = 0; j < N; j++)
		for (int i = 0; i < N; i++)
			printf("Il numero %d è presente %d volte\n", matrix[j][i], cerca2(matrix, matrix[j][i]));
}
void visualizza(int matrix[][N])
{
	for (int j = 0; j < N; j++)
	{
		for (int i = 0; i < N; i++)
		{
			printf("%d ", matrix[j][i]);
		}
		printf("\n");
	}
		
}
int cerca2(int matrix[][N], int x)
{
	int cont = 0;
	for (int j = 0; j < N; j++)
	{
		for (int i = 0; i < N; i++)
		{
			if (matrix[j][i] == x)
				cont++;
		}
	}
	return cont;
}